iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
AI & Data

ML From Scratch系列 第 18

[Day 18] Neural Network — 背後理論

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20230918/20152821jPTA11Ael6.jpg

Prerequisite

MLP & DNN

多層感知器(MLP)和深度神經網路(DNN)都是神經網路的類型,但它們有一些重要的區別。

多層感知器(MLP)

  • MLP是最簡單和最常見的神經網路類型。
  • 它由輸入層、一個或多個隱藏層和輸出層組成。
  • MLP能夠處理線性可分和非線性可分的數據。
  • MLP通常用於處理非線性可分的數據,如回歸分析。
  • 由於其簡單性,它們最適合用於複雜的分類任務和預測建模。

深度神經網路(DNN)

  • DNN是具有深層的人工神經網路。
  • MLP是DNN的一個子集,而DNN可以有迴圈,MLP則始終是前饋的。

換句話說,MLP是一種特定類型的神經網路,具有至少三層(輸入層、輸出層和至少一個隱藏層),而DNN則是具有更多或更深層的神經網路。

Regularization

正則化(Regularization)是一種用於機器學習和神經網絡中的技術,旨在減少模型的過度擬合(overfitting)問題。

過度擬合發生在模型在訓練數據上表現很好,但在新的、未見過的數據上表現很差的情況下,這是因為模型在訓練數據上學到了噪聲或不必要的細節,而忽略了通用的特徵。

正則化的目標是使模型更加泛化,即在新數據上表現更好。

在神經網絡中,最常見的正則化方法包括 L1 正則化和 L2 正則化。

這些方法通常通過修改損失函數或成本函數,引入額外的懲罰項(penalty term)來實現。

  1. L1 正則化(Lasso 正則化)

    L1 正則化通常用於權重的稀疏化,可以幫助模型選擇最重要的特徵,並將不重要的特徵的權重變為零。它的數學表示如下:

    https://chart.googleapis.com/chart?cht=tx&chl=J(%5Ctheta)%20%3D%20%5Ctext%7BLoss%20function%7D%20%2B%20%5Clambda%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20%7Cw_i%7C

    其中:

    • https://chart.googleapis.com/chart?cht=tx&chl=J(%5Ctheta) 是經過正則化的成本函數。
    • https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 是正則化參數,控制正則化的程度。
    • https://chart.googleapis.com/chart?cht=tx&chl=w_i 是權重參數。
  2. L2 正則化(Ridge 正則化)

    L2 正則化通常用於防止權重參數變得過大,它的數學表示如下:

    https://chart.googleapis.com/chart?cht=tx&chl=J(%5Ctheta)%20%3D%20%5Ctext%7BLoss%20function%7D%20%2B%20%5Clambda%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20w_i%5E2

    其中:

    • https://chart.googleapis.com/chart?cht=tx&chl=J(%5Ctheta) 是經過正則化的成本函數。
    • https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 是正則化參數,控制正則化的程度。
    • https://chart.googleapis.com/chart?cht=tx&chl=w_i 是權重參數。

這些正則化項被添加到原始的損失函數中,通常以 https://chart.googleapis.com/chart?cht=tx&chl=J(%5Ctheta) 的形式,然後通過梯度下降等優化算法來最小化整體成本函數。

正則化有助於避免過度擬合,提高模型的泛化能力,使其在新數據上更好地表現。

選擇正則化參數 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 是一個重要的超參數調整過程,它可以影響正則化的程度。

Goal

神經網絡是一種機器學習模型,模擬了人類神經元之間的信息傳遞,用於學習從數據中提取特徵和解決各種任務。

Background

一個典型的神經網絡可以表示為多個層次的神經元,其中包括輸入層(input layer)、隱藏層(hidden layers)和輸出層(output layer)。

我們用下標表示不同的層,並使用上標表示每個層中的神經元。

輸入層包含特徵或輸入變數,我們用 https://chart.googleapis.com/chart?cht=tx&chl=x%5E%7B(i)%7D 表示第 https://chart.googleapis.com/chart?cht=tx&chl=i 個輸入特徵。通常,這些特徵將組成一個向量 https://chart.googleapis.com/chart?cht=tx&chl=x,其中 https://chart.googleapis.com/chart?cht=tx&chl=x%20%3D%20%5Bx%5E%7B(1)%7D%2C%20x%5E%7B(2)%7D%2C%20%5Cldots%2C%20x%5E%7B(n)%7D%5D,其中 https://chart.googleapis.com/chart?cht=tx&chl=n 是特徵的數量。

隱藏層可以有多個層次,我們用 https://chart.googleapis.com/chart?cht=tx&chl=a%5E%7B%5Bl%5D%7D_j 表示第 https://chart.googleapis.com/chart?cht=tx&chl=l 層的第 https://chart.googleapis.com/chart?cht=tx&chl=j 個神經元的激活值。這些激活值是根據前一層的輸出計算得出的,通常使用 activation function 進行非線性轉換。具體來說,每個隱藏層的激活值可以通過以下方式計算:

https://chart.googleapis.com/chart?cht=tx&chl=a%5E%7B%5Bl%5D%7D_j%20%3D%20f%5E%7B%5Bl%5D%7D%5Cleft(%5Csum_%7Bi%7D%20w%5E%7B%5Bl%5D%7D_%7Bij%7Da%5E%7B%5Bl-1%5D%7D_i%20%2B%20b%5E%7B%5Bl%5D%7D_j%5Cright)

其中:

  • https://chart.googleapis.com/chart?cht=tx&chl=l 表示層的索引(輸入層為 0,隱藏層和輸出層依次遞增)。
  • https://chart.googleapis.com/chart?cht=tx&chl=j 表示神經元的索引。
  • https://chart.googleapis.com/chart?cht=tx&chl=w%5E%7B%5Bl%5D%7D_%7Bij%7D 表示第 https://chart.googleapis.com/chart?cht=tx&chl=j 層的第 https://chart.googleapis.com/chart?cht=tx&chl=j 個神經元與第 https://chart.googleapis.com/chart?cht=tx&chl=l-1 層的第 https://chart.googleapis.com/chart?cht=tx&chl=i 個神經元之間的權重。
  • https://chart.googleapis.com/chart?cht=tx&chl=b%5E%7B%5Bl%5D%7D_j 表示第 https://chart.googleapis.com/chart?cht=tx&chl=j 層的第 https://chart.googleapis.com/chart?cht=tx&chl=j 個神經元的偏差項(bias term)。
  • https://chart.googleapis.com/chart?cht=tx&chl=f%5E%7B%5Bl%5D%7D 是 activation function,用於引入非線性性質。

輸出層的激活值 https://chart.googleapis.com/chart?cht=tx&chl=a%5E%7B%5BL%5D%7D_j 用於表示神經網絡的輸出。在分類任務中,通常使用 softmax 函數來獲得每個類別的概率分佈。

神經網絡的訓練過程涉及到調整權重和偏差項,以最小化損失函數,以實現所需的任務,例如分類或回歸。

以下是有關 Neural Network 不同類型的架構

https://ithelp.ithome.com.tw/upload/images/20230918/201528210uCgSPZ9m4.png


Reference

歡迎更仔細閱讀以下相關內容以了解本篇知識


上一篇
[Day 17] Multilayer Perceptron
下一篇
[Day 19] Neural Network — 主題實作
系列文
ML From Scratch31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言